"""统计一个整数对应的二进制数的1的个数。输入一个整数（可正可负，负数就按64位去遍历即可）， 输出该整数的二进制包含1的个数（使用位运算）"""

#按位与，两个都为1时，结果为1，否则为0
# 按位或，两位中至少有一个为1时，结果为1，否则为0
# 按位异或，两位相同时，结果为0，否则为1
# 按位非，对每个位取反
#左移，将所有位左移指定位数，结果扩大两倍。
#右移，将所有位右移指定位数，结果缩小两倍。


a = int(input("请输入一个整数"))

if a>=0:
    num = bin(a).count('1')
else:
    num = 64 - bin(~a).count('1')
print(num)


a = int(input("请输入一个整数"))
numbers=0
check_flag =1
while check_flag<=2**64:
    if a&check_flag:
        numbers+=1
    check_flag <<=1
print(numbers)


